﻿#region using
using ibba.src.DataAccess;
using System.Data;
using ibba.src.global;
using System.Collections.Generic;
using ibba.src.norisk.BusinessEntities;
#endregion

/*****************************************************************************************************************          
 ParesIndexadores : Descreve os métodos de acesso a dados da classe ParesIndexadores
            
 Histórico de Alterações:      
  -> 07/05/2013 - Amadeu Boldrin - Criacao - ST568862
 *****************************************************************************************************************/

namespace ibba.src.norisk.DataAccess
{
    public class ParesIndexadoresDb : DataAccessBase
    {

        public List<ParesIndexadores> ObterParesIndexadores()
        {
            List<ParesIndexadores> retorno = new List<ParesIndexadores>();

            using (AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL))
            {

                using (IDataReader rdr = db.ExecuteReader(CommandType.StoredProcedure, "DBO.SRCP_OBTER_PARES_INDEXADORES", new List<IDataParameter>()))
                {

                    while (rdr.Read())
                    {
                        ParametroParesIndexadores param = new ParametroParesIndexadores()
                        {
                            IdEntidade = (int)ObterValor(rdr, "ID_ENTIDADE"),
                            DescricaoEntidade = (string)ObterValor(rdr, "DS_ENTIDADE"),
                            IdParametro = (int)ObterValor(rdr, "ID_PARAMETRO"),
                            DescricaoParametro = (string)ObterValor(rdr, "DS_PARAMETRO")
                        };
                            

                        retorno.Add(
                                new ParesIndexadores()
                                {
                                    IdParIndexador = (int)ObterValor(rdr,"IDT_DPAR_INDD"),
                                    CodIndexadorAtivo = (string)ObterValor(rdr, "COD_IND_ATIV"),
                                    CodIndexadorPassivo = (string)ObterValor(rdr, "COD_IND_PASV"),
                                    Parametro = param
                                }
                        );
                    }

                }

            }

            return (retorno);
        }


        //LUD:10260
        public List<ParesIndexadores> ObterParesIndexadoresPorParametro(ParametroParesIndexadores pParametro)
        {
            List<ParesIndexadores> retorno = new List<ParesIndexadores>();

            List<IDataParameter> parametros = new List<IDataParameter>();

            parametros.Add(AcessoDadosHelper.CriarParametro("@pID_PARAMETRO", DbType.Int32, pParametro.IdParametro));

            AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL);

            using (IDataReader rdr = db.ExecuteReader(CommandType.StoredProcedure, "DBO.SRCP_OBTER_PARES_INDEXADORES_POR_PARAM", parametros))
            {

                while (rdr.Read())
                {
                    ParametroParesIndexadores param = new ParametroParesIndexadores()
                    {
                        IdEntidade = (int)ObterValor(rdr, "ID_ENTIDADE"),
                        DescricaoEntidade = (string)ObterValor(rdr, "DS_ENTIDADE"),
                        IdParametro = (int)ObterValor(rdr, "ID_PARAMETRO"),
                        DescricaoParametro = (string)ObterValor(rdr, "DS_PARAMETRO")
                    };

                    retorno.Add(
                            new ParesIndexadores()
                            {
                                IdParIndexador = (int)ObterValor(rdr, "IDT_DPAR_INDD"),
                                CodIndexadorAtivo = (string)ObterValor(rdr, "COD_IND_ATIV"),
                                CodIndexadorPassivo = (string)ObterValor(rdr, "COD_IND_PASV"),
                                Parametro = param
                            }
                    );
                }

            }

            return (retorno);
        }


        public List<ParametroParesIndexadores> ObterParametros(int IdEntidade)
        {
            List<ParametroParesIndexadores> retorno = new List<ParametroParesIndexadores>();

            List<IDataParameter> parametros = new List<IDataParameter>();

            parametros.Add(AcessoDadosHelper.CriarParametro("@pID_ENTIDADE", DbType.Int32, IdEntidade));

            AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL);

            using (IDataReader rdr = db.ExecuteReader(CommandType.StoredProcedure, "DBO.SRCP_OBTER_ENTIDADE_PARAMETRO", parametros))
            {

                while (rdr.Read())
                {
                    retorno.Add(
                            new ParametroParesIndexadores()
                            {
                                IdEntidade = (int)ObterValor(rdr, "ID_ENTIDADE"),
                                DescricaoEntidade = (string)ObterValor(rdr, "DS_ENTIDADE"),
                                IdParametro = (int)ObterValor(rdr, "ID_PARAMETRO"),
                                DescricaoParametro = (string)ObterValor(rdr, "DS_PARAMETRO")
                            }
                    );
                }

            }

            return (retorno);
        }

        public List<ParametroParesIndexadores> ObterParametros()
        {
            List<ParametroParesIndexadores> retorno = new List<ParametroParesIndexadores>();

            AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL);

            using (IDataReader rdr = db.ExecuteReader(CommandType.StoredProcedure, "DBO.SRCP_OBTER_ENTIDADE_PARAMETRO", new List<IDataParameter>()))
            {

                while (rdr.Read())
                {
                    retorno.Add(
                            new ParametroParesIndexadores()
                            {
                                IdEntidade = (int)ObterValor(rdr, "ID_ENTIDADE"),
                                DescricaoEntidade = (string)ObterValor(rdr, "DS_ENTIDADE"),
                                IdParametro = (int)ObterValor(rdr, "ID_PARAMETRO"),
                                DescricaoParametro = (string)ObterValor(rdr, "DS_PARAMETRO")
                            }
                    );
                }

            }

            return (retorno);
        }


        public List<string> ObterIndexadores()
        {
            List<string> retorno = new List<string>();

            using (AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL))
            {

                using (IDataReader rdr = db.ExecuteReader(CommandType.StoredProcedure, "DBO.SRCP_OBTER_INDEXADORES", new List<IDataParameter>()))
                {

                    while (rdr.Read())
                    {
                        retorno.Add((string)base.ObterValor(rdr, "CD_INDICADOR"));
                    }

                }

            }

            return (retorno);
        }


        public int InserirParIndexador(BusinessEntities.ParesIndexadores pParIndexador, string pUser)
        {
            List<IDataParameter> parametros = new List<IDataParameter>();

            int retorno;

            parametros.Add(AcessoDadosHelper.CriarParametro("@pCOD_IND_ATIV", DbType.String, pParIndexador.CodIndexadorAtivo));
            parametros.Add(AcessoDadosHelper.CriarParametro("@pCOD_IND_PASV", DbType.String, pParIndexador.CodIndexadorPassivo));
            parametros.Add(AcessoDadosHelper.CriarParametro("@pCOD_USUA", DbType.String, pUser));
            parametros.Add(AcessoDadosHelper.CriarParametro("@pID_PARAMETRO", DbType.Int32, pParIndexador.Parametro.IdParametro));

            AcessoDadosHelper db = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL);

            retorno = db.ExecuteScalar(CommandType.StoredProcedure, "DBO.SRCP_INSERIR_PAR_INDEXADOR", parametros);

            return retorno;
        }


        public void ExcluirParIndexador(BusinessEntities.ParesIndexadores pParIndexador, string pUser)
        {
            List<IDataParameter> parametros = new List<IDataParameter>();

            parametros.Add(AcessoDadosHelper.CriarParametro("@pIDT_DPAR_INDD", DbType.Int32, pParIndexador.IdParIndexador));
            parametros.Add(AcessoDadosHelper.CriarParametro("@pCOD_USUA", DbType.String, pUser));

            AcessoDadosHelper oAcessoDadosHelper = new AcessoDadosHelper(GlobalInfo.SISTEMA, GlobalInfo.LOCAL);

            oAcessoDadosHelper.ExecuteNonQuery(CommandType.StoredProcedure, "dbo.SRCP_EXCLUIR_PAR_INDEXADOR", parametros);
        }
    }
}
